package com.langwen.login.dao.impl;

import java.util.List;

import javax.xml.registry.infomodel.User;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.langwen.Model.HrEmp;
import com.langwen.login.dao.UserDao;


public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

	public void add(HrEmp emp) {
//		Session session = null;
//		try{
//			session = HibernateUtil.getSession();
//			session.beginTransaction();
//			session.save(user);
//			session.getTransaction().commit();
//		}catch(Exception e) {
//			e.printStackTrace();
//			session.getTransaction().rollback();
//		}finally{
//			HibernateUtil.closeSession(session);
//		}
		this.getHibernateTemplate().saveOrUpdate(emp);
	}
	
	@SuppressWarnings("unchecked")
	public List<HrEmp> getUsers() {
//		List<User> users = null;
//		Session session = null;
//		try{
//			session = HibernateUtil.getSession();
//			session.beginTransaction();
//		
//			users = session.createQuery("from User").list();
//			
//			session.getTransaction().commit();
//		}catch(Exception e) {
//			e.printStackTrace();
//			session.getTransaction().rollback();
//		}finally{
//			HibernateUtil.closeSession(session);
//		}
//		return users;
		return this.getHibernateTemplate().find("from HR_EMP");
	}

	public HrEmp getById(int id) {
//		User user = null;
//		Session session = null;
//		try{
//			session = HibernateUtil.getSession();
//			session.beginTransaction();
//		
//			user = (User) session.get(User.class, id);
//			
//			session.getTransaction().commit();
//		}catch(Exception e) {
//			e.printStackTrace();
//			session.getTransaction().rollback();
//		}finally{
//			HibernateUtil.closeSession(session);
//		}
//		return user;
		
		return  this.getHibernateTemplate().load(HrEmp.class, id);
	}
	
	public HrEmp getByUsername(String emp) {
//		User user = null;
//		Session session = null;
//		try{
//			session = HibernateUtil.getSession();
//			session.beginTransaction();
//		
//			user = (User)session.createQuery("from User u where u.username = ?")
//			              	    .setString(0, username)
//			              	    .list()
//			              	    .get(0);
//			
//			session.getTransaction().commit();
//		}catch(Exception e) {
//			e.printStackTrace();
//			session.getTransaction().rollback();
//		}finally{
//			if(session != null) {
//				session.close();
//			}
//		}
//		return user;
		//return (HrEmp)this.getHibernateTemplate().find("from HrEmp u where u.EName = ?",emp).get(0);
		HrEmp hrm= new HrEmp();
		hrm.setEName("admin");
		hrm.setEPwd("admin");
		return hrm;
	}
	public void deleteById(int id) {
//		Session session = null;
//		try{
//			session = HibernateUtil.getSession();
//			session.beginTransaction();
//		
//			User user = getById(id);
//			session.delete(user);
//			
//			session.getTransaction().commit();
//		}catch(Exception e) {
//			e.printStackTrace();
//			session.getTransaction().rollback();
//		}finally{
//			HibernateUtil.closeSession(session);
//		}
		this.getHibernateTemplate().delete(this.getHibernateTemplate().get(HrEmp.class, id));
	}
	
	public void delete(HrEmp emp) {
//		Session session = null;
//		try{
//			session = HibernateUtil.getSession();
//			session.beginTransaction();
//		
//			session.delete(user);
//			
//			session.getTransaction().commit();
//		}catch(Exception e) {
//			e.printStackTrace();
//			session.getTransaction().rollback();
//		}finally{
//			HibernateUtil.closeSession(session);
//		}
		this.getHibernateTemplate().delete(emp);
	}
	
	public void update(HrEmp emp) {
//		Session session = null;
//		try{
//			session = HibernateUtil.getSession();
//			session.beginTransaction();
//		
//			session.saveOrUpdate(user);
//			
//			session.getTransaction().commit();
//		}catch(Exception e) {
//			e.printStackTrace();
//			session.getTransaction().rollback();
//		}finally{
//			HibernateUtil.closeSession(session);
//		}
		this.getHibernateTemplate().update(emp);
	}
}
